﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using vensoft.Entities;
using vensoft.BussinesLogic;

namespace vensoft.Win32
{
    public partial class frmRegistrarPedido : Form
    {
        IPedidoBL pedidoBL;
        
        public frmRegistrarPedido()
        {
            InitializeComponent();
            pedidoBindingSource.AddNew();
            pedidoBL = new PedidoBL();
        }

        private void btnBuscarProveedor_Click(object sender, EventArgs e)
        {
            frmGestionarProveedor formProv = new frmGestionarProveedor();
            formProv.estadoBotones = 0;
            formProv.ShowDialog();
            if (formProv.Validacion != 1)
            {
                CurrentPedido.Proveedor = formProv.proveedor;
                pedidoBindingSource.ResetBindings(true);
            }
        }
        
        //private void btnBuscarPersonal_Click(object sender, EventArgs e)
        //{
        //    frmGestionarPersonal formper = new frmGestionarPersonal();
        //    formper.estadoBotones = 0;
        //    formper.ShowDialog();

        //    CurrentPedido.Personal = formper.personal;

        //    pedidoBindingSource.ResetBindings(true);
        //}

        public List<Usuario> UsuarioActual { get; set; }

        private void frmRegistrarPedido_Load(object sender, EventArgs e)
        {
            CurrentPedido.Personal = new Personal();
            CurrentPedido.Personal.Cod_Personal = UsuarioActual.ElementAt(0).Cod_Personal;
            CurrentPedido.Personal.nombre = UsuarioActual.ElementAt(0).Nomb_Usuario;
            CurrentPedido.Personal.dni = UsuarioActual.ElementAt(0).DNI;
            CurrentPedido.Nombre_Pers = CurrentPedido.Personal.nombre;
            CurrentPedido.PersonalId = CurrentPedido.Personal.Cod_Personal;
            pedidoBindingSource.ResetBindings(true);  
        }

        public void Llenar()
        {
            pedidoBindingSource.DataSource = CurrentPedido;
            productoBindingSource.DataSource = CurrentProducto;
           
        }
        public Pedido CurrentPedido
        {
            get { return pedidoBindingSource.Current as Pedido; }
            set
            {
                pedidoBindingSource.DataSource = value;
            }
        }
        public Producto CurrentProducto
        {
            get { return productoBindingSource.Current as Producto; }
            set
            {
                productoBindingSource.DataSource = value;
            }
        }
       

        private void btnBuscarProducto_Click(object sender, EventArgs e)
        {
            frmGestionarProducto formprod = new frmGestionarProducto();
            formprod.estadoBotones = 0;
            formprod.ShowDialog();
            if (formprod.Validacion != 1)
            {
                CurrentProducto = formprod.Current;
                productoBindingSource.ResetBindings(true);
            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            var query = from p in CurrentPedido.Detalle
                        where p.Producto.Cod_Producto == CurrentProducto.Cod_Producto
                        select p;

            if (CurrentProducto != null)
            {
                if (query.Count() > 0)
                {
                    DetallePedido detalle = query.Single();
                    detalle.Cantidad += nudcantidad.Value;
                    CurrentPedido.Total = CurrentPedido.Detalle.Sum(d => d.Monto);
                    pedidoBindingSource.ResetBindings(true);
                    
                    detalleBindingSource.ResetBindings(true);

                }
                else
                {
                    DetallePedido detalle = new DetallePedido()
                    {
                        Producto = CurrentProducto,
                        Cantidad = Int32.Parse(nudcantidad.Value.ToString()),
                        Precio = decimal.Parse(precioTextBox.Text)
                    };

                    CurrentPedido.Detalle.Add(detalle);
                    CurrentPedido.Total = CurrentPedido.Detalle.Sum(d => d.Monto);
                  
                    pedidoBindingSource.ResetBindings(true);
                    detalleBindingSource.ResetBindings(true);
                    detallePedidoBindingSource.ResetBindings(true);
                   
                }
            }
        }

        private void btnRegistrarPedido_Click(object sender, EventArgs e)
        {
            if (CurrentProducto != null || CurrentPedido.Proveedor != null || CurrentPedido.Personal != null)
            {
                pedidoBL.RegistrarPedido(CurrentPedido);
                MessageBox.Show("Pedido Registrado");
                Close();
            }
        }
       


        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void precioTextBox_TextChanged(object sender, EventArgs e)
        {

        }
        //private void nudcantidad_ValueChanged(object sender, EventArgs e)
        //{
        //    ErrorProvider(nudcantidad);
        //}

        //private void ErrorProvider(NumericUpDown N)
        //{
        //    if (N.Value > Convert.ToInt32(stockTextBox.Text))
        //    {
        //        btnAgregar.Enabled = false;
        //        ERPValCantidad.SetError(N, "No tiene stock suficiente.");
        //    }
        //    else
        //    {
        //        btnAgregar.Enabled = true;
        //        ERPValCantidad.SetError(N, "");
        //    }
        //}
        //private void txtBuscarProv_KeyDown(object sender, KeyEventArgs e)
        //{
        //    if (e.KeyCode == Keys.Enter)
        //    {
        //        proveedorBL = new ProveedorBL();
        //        proveedorBL.GetFromProveedorByDescripcion(txtRUC.Text);
        //    }
        //}
        //public void txtBuscarProveedor_Click(Object sender, MouseEventArgs e)
        //{
        //    switch (e.Button)
        //    {
        //        case (MouseButtons.Left):
        //            txtRUC.Text = null;
        //            break;
        //    }
        //}
    }
}
